// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

const EMPTY = { id: '' }

// ============================== 导出混合 ============================== //

export default (path = '') => {
  const PRE = path ? `${path.replace('/', '_')}_` : ''

  return {
    /**
     * 混入列表 (配置选项合并)
     */
    mixins: [CORE.mixWeb(path, PRE)],

    /**
     * 状态数据 (函数返回对象)
     */
    data() {
      return {
        easyVisible: false, // 弹窗是否可见
        row: EMPTY, // 行数据
      }
    },

    /**
     * 监听属性 (深度 deep 首次 immediate)
     */
    watch: {
      /**
       * 监听详情关闭
       */
      easyVisible(easyVisible) {
        CORE.iframeNotice(easyVisible) // 如果当前是 iframe 中的页面，则通知父层升降该 iframe 的 z-index

        !easyVisible && setTimeout(() => (this.row = EMPTY), 300)
      },
    },

    /**
     * 本地方法 (轻量重要在前)
     */
    methods: {
      /**
       * 打开详情弹窗
       */
      async openDetail(row) {
        this.row = row
        this.easyVisible = true
      },

      /**
       * 刷新列表
       */
      refreshList(page) {
        this[`${PRE}param`].idList = this[`${PRE}param`].rowList = [] // 清空多选
        this[`${PRE}startList`](page)
      },
    },
  }
}
